package cn.hairui.blog.service;

import cn.hairui.blog.model.Artical;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

/**
 * @author laoganbu
 * @date: 2019/3/4 16:50
 */
@Service
public interface ArticalService {
    public int add(Artical artical);

    public int update(Artical artical);

    public Artical find(int pk);

    public int delete(int pk);

    /**
     * 通过tab标签索引查找文章 指定条数
     *
     * @param navid
     * @param count
     * @return
     */
    List<Artical> queryByNavid(int navid, int count);

    /**
     * 通过分类号查询文章 指定条数
     *
     * @param categoryId
     * @param count
     * @return
     */
    List<Artical> findByCategoryIdLimited(Integer categoryId, int count);

    /**
     * 查询热门文章
     *
     * @param count
     * @return
     */
    List<Artical> findHotLimited(int count);

    /**
     * 获取置顶文章
     *
     * @return
     */
    List<Artical> findTop();

    /**
     * 获取所有文章
     *
     * @return
     */
    public List<Artical> list();

    /**
     * @param count 数量
     * @return
     * @Description 查询标签集合并展示指定数量
     */
    List<Map> findtagsLimited(int count);

    /**
     * 查詢分类编号下面的所有的文章
     *
     * @param categoryId
     * @return
     */
    List<Artical> findByCategoryId(Integer categoryId);

    /**
     * 归档形式统计所有文章
     *
     * @return
     */
    List<Map> listArchive();

    /**
     * 通过年月查询文章信息
     *
     * @param dateStr
     * @return
     */
    List<Artical> findByCreateDateYm(String dateStr);

    /**
     * 通过关键字查询文章信息（检索内容和标题）
     *
     * @param keyword
     * @return
     */
    List<Artical> findByKeyword(String keyword);

    /**
     * 获取关键字段列表
     *
     * @return
     */
    List<Map> listMgr();

    /**
     * 获取所有文章数量
     *
     * @return
     */
    int countMgr();

    /**
     * 修改文章置顶状态
     *
     * @param id
     * @param flag
     */
    void updateIntopSts(int id, String flag);

    /**
     * 更新文章内容
     *
     * @param artical
     */
    void updateContent(Artical artical);

    List<String> findtags();

    int findCountByTagName(String tagName);

    List<Artical> findByTags(String tag);

    /**
     * 获取上一篇文章
     *
     * @param id
     * @return
     */
    Artical findLast(int id);

    /**
     * 获取下一篇文章
     *
     * @param id
     * @return
     */
    Artical findNext(int id);

    /**
     * 获取指定专题下的文章
     *
     * @param topicId
     * @return
     */
    List<Artical> findByTopicId(Integer topicId);
}
